import turtle


def draw_tree(branch_len, branch_color, leaf_color):
    """
    绘制动态树的递归函数

    参数:
    branch_len -- 树干的长度
    branch_color -- 树枝的颜色
    leaf_color -- 树叶的颜色
    """
    if branch_len < 5:  # 递归结束条件
        return
    else:
        turtle.pensize(branch_len / 10)  # 根据树干长度设置画笔粗细
        turtle.color(branch_color)  # 设置画笔颜色为树枝的颜色
        turtle.forward(branch_len)  # 绘制当前分支

        turtle.right(20)  # 右转20度
        draw_tree(branch_len - 15, branch_color, leaf_color)  # 递归绘制右侧分支

        turtle.left(40)  # 左转40度
        draw_tree(branch_len - 15, branch_color, leaf_color)  # 递归绘制左侧分支

        turtle.right(20)  # 右转20度
        turtle.backward(branch_len)  # 返回到初始位置

    if branch_len < 20:  # 树叶较小
        turtle.color(leaf_color)  # 设置画笔颜色为树叶的颜色
        turtle.stamp()  # 绘制树叶
    else:
        turtle.color(branch_color)  # 设置画笔颜色为树枝的颜色


def main():
    turtle.setup(width=800, height=600)  # 设置窗口大小为800x600
    turtle.bgcolor('black')  # 设置背景颜色为黑色

    turtle.penup()  # 抬起画笔，移动时不绘制轨迹
    turtle.goto(0, -200)  # 将画笔移动到坐标(0, -200)
    turtle.pendown()  # 放下画笔，开始绘制轨迹

    turtle.speed(0)  # 设置画笔移动速度为最快

    branch_color = (0.6, 0.4, 0.2)  # 棕色
    leaf_color = (0.0, 0.6, 0.0)  # 绿色

    turtle.color(branch_color)  # 设置画笔颜色为树枝的颜色
    turtle.shape("turtle")  # 设置画笔形状为海龟
    turtle.shapesize(1)  # 设置画笔形状的大小为1
    turtle.left(90)  # 左转90度

    turtle.begin_fill()  # 开始填充颜色
    draw_tree(100, branch_color, leaf_color)  # 调用函数绘制树
    turtle.end_fill()  # 结束填充颜色

    turtle.hideturtle()  # 隐藏画笔形状
    turtle.done()  # 结束绘制


if __name__ == '__main__':
    main()
